/**
 * @file    core.h
 * @brief   Documentation: Fundamentals of WOSH Core and its API
 ****************************************************************************
 * @author  Alessandro Polo
 * @version 0.8.499 $Id: core.h 2861 2010-08-07 02:42:53Z alex $
 ****************************************************************************/
/* Copyright (c) 2007-2010, WOSH - Wide Open Smart Home 
 * by Alessandro Polo - OpenSmartHome.com
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *     * Redistributions of source code must retain the above copyright
 *       notice, this list of conditions and the following disclaimer.
 *     * Redistributions in binary form must reproduce the above copyright
 *       notice, this list of conditions and the following disclaimer in the
 *       documentation and/or other materials provided with the distribution.
 *     * Neither the name of the OpenSmartHome.com WOSH nor the
 *       names of its contributors may be used to endorse or promote products
 *       derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY Alessandro Polo ''AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
 * DISCLAIMED. IN NO EVENT SHALL Alessandro Polo BE LIABLE FOR ANY
 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 ****************************************************************************/

/*! \page page_core Core
 *
 * This page introduces the WOSH Core library, micro-kernel and core-modules of the middleware.
 *
 * \section page_core_toc Table of Contents:
 *
 *  - \ref page_core_overview
 *
 *  - \ref page_core_kernel "Micro-Kernel" (wosh::WoshKernel)
 *
 *  Core \b Modules
 *
 *     - \ref page_core_objectfactory - Manage allocation, type registration and knowledge
 *     - \ref page_core_busses - Manage busses, interact with network-module
 *     - \ref page_core_bundles - Manage bundles (services), their life-cycle and requirements
 *     - \ref page_core_network - Manage networking, connections, supported protocols
 *     - \ref page_core_security - Support security and common access operation
 *     - \ref page_core_users - Manage users and groups
 *     - \ref page_core_sessions - Manage system sessions (user interaction)
 *     - \ref page_core_filesystem - High access-layer to the real filesystem
 *     - \ref page_core_persistence - Provide persistence
 *     - \ref page_core_devices - Collect available devices
 *     - \ref page_core_threads - Manage and monitor local threads
 *     - \ref page_core_systemlogger - Manage system-logging
 *     - \ref page_core_systemmonitor - Monitor errors and provide functionalities for debugging
 *
 *
 * \htmlonly <hr/> \endhtmlonly
 ****************************************************************************
 * \section page_core_overview Overview
 *
 * A generic WOSH system is made of:
 *  - \ref page_core "WOSH Core" (basic classes, kernel and core modules)
 *  - \ref page_framework "WOSH Framework" (extensions to the core and common implementations)
 *  - \ref page_bundles "WOSH Bundles" (services and devices)
 *  - \ref page_applications "WOSH Application" (end-user objects)
 *
 * As the name says, WOSH Core library is the lowest layer of the middleware.
 * It includes:
 *
 *  - common classes, such as containers, abstract interfaces,
 *    base implementation of standard components (such as Bus)
 *
 *  - micro-kernel, responsible of loading core-modules and maintaining the global state
 *
 *  - core-modules, low-level services providing scoped functionalities such as
 *    component-loading, networking, security, persistence and so on.
 *    Some core-modules are distributed.
 *
 * The WOSH Core layer is shared by (included in) all WOSH projects, all source code is
 * fully multi-platform and implemented from scratch (no external libraries).
 *
 * \note WOSH Core is \c still based on \c QT library.
 *
 * Often, base classes are extended within the \ref page_framework "WOSH Framework",
 * a good example is \ref page_core_network "Networking": wosh::NetworkProtocol and wosh::NetworkChannel
 * are defined (abstract) within the core, but they are implemented for the UDP and TCP protocols
 * in the wosh::network namespace (\ref page_framework_network "WOSH Network Framework"),
 * It may seems more complex than required, but keep in mind that WOSH is a modular system,
 * designed for embedded devices too: that's why requirements of the core itself are the fewest possible,
 * moreover there could be many different implementation of the same class (based on different libraries).
 *
 * QT project file of WOSH Core is <a href="../../src/core/core.pro">/src/core/core.pro</a>.
 *
 *
 ****************************************************************************
 *
 */ 
